FC is a serial transport protocol that was developed for carrying other transport protocols. In conventional SANs, FC carries Small Computer System Interconnect (SCSI), which is a parallel protocol. In other words, parallel SCSI commands are encapsulated within FC frames and transported over FC links in FC SANs.
FIG. 1 illustrates an exemplary conventional SAN 100 which includes one or more hosts 102 connected to two Redundant Array of Independent Disks (RAID) controllers 104 over a network 106. The host side of the RAID controllers 104 is referred to as the “front end” 112. In conventional SANs 100, the RAID controllers 104 are connected to a plurality (e.g. 30 to 100) of drives in disk drive enclosures 108, and send and receive FC frames over a FC link 110. The disk drive enclosure side of the RAID controllers 104 is referred to as the “back end” 114. In conventional SANs 100, the disk drives within the disk drive enclosures are FC drives 118 that operate according to the SCSI protocol.
FC drives offer the best performance, but are expensive. Therefore, less expensive (but lower performance) Advanced Technology Attachment (ATA) drives of the type commonly used in desktop or notebook computers have been used in place of FC drives, or along with FC drives in what is known as tiered storage. The ATA drives may be Parallel ATA (PATA) or Serial ATA (SATA) drives. FIG. 1 illustrates a SAN in which one of the disk drive enclosures 108 contain PATA drives 120 rather than FC drives. PATA drives require a FC-to-PATA bridge 116, which is relatively expensive and effectively makes the PATA disk drives 120 appear as SCSI drives to the RAID controller 104. In other words, the RAID controllers 104 send FC encapsulated SCSI commands to the disk drive enclosures, and receive FC encapsulated SCSI commands from the disk drive enclosures, and the conversion between FC and PATA occurs in the bridge 116, transparent to the RAID controllers 104 and the rest of the SAN 100. Because PATA drives are different from FC drives in terms of interfaces, error recovery and discovery, FC-to-PATA bridges are designed to be specific to a particular type of PATA drive. As a consequence, every time a new PATA drive is developed, the FC-to-PATA bridge may require modification.
In disk drive technology, as well as in transport technology, there are reliability, speed and cable distance benefits to utilizing serial protocols rather than parallel protocols. SATA drives, the serial counterpart to PATA drives envisioned for consumer applications, are therefore now being contemplated as an upgrade to PATA in FC SANs that have historically utilized SCSI drives. Previous solutions for utilizing SATA drives in FC SANs utilized a conversion interface, or bridge, between the FC link and the SATA device. These conversion interfaces terminated all FC exchanges and initiated corresponding SATA exchanges at or near the targets. These bridging solutions required a bridge unit per SATA device or a bridge per SATA enclosure, and as a result were prohibitively expensive solutions in a SAN environment. In addition, all error cases were dealt with at or near the drive level. In the other direction, SATA exchanges were also terminated and FC exchanges were created and sent to the FC initiator. Because the FC to SATA translation was performed independently at each SATA drive or enclosure, there was no clean way of performing this conversion and the approach was prone to performance and interoperability issues. Error recovery in FC is also much different than SATA. The interface had to deal with the differences, which added complexity and additional cost to the system.
To overcome the problems inherent in the previously described solutions, novel methods and apparatus for enabling SATA drives to be utilized in FC SANs were disclosed in U.S. application Ser. No. 11/104,230 entitled “Tunneling SATA Targets Through Fibre Channel,” filed on Apr. 11, 2005, and U.S. application Ser. No. 11/104,341 entitled “Method and Apparatus for SATA Tunneling Over Fibre Channel,” also filed on Apr. 11, 2005, both of which are incorporated by reference herein. These applications introduce Fibre Channel Attached SATA Tunneling (FAST), or more formally FC-SATA, a new protocol that allows the transport of SATA command and data FIS over a FC infrastructure. The FC infrastructure and FC transport are preserved to the greatest extent possible to minimize the changes needed to legacy FC SANs. Translation and protocol handling is moved into the RAID controllers, which is a cost-effective solution because the RAID controllers can perform the protocol translation for a large number of drives. Supporting FC and SATA on the same interface is similar to the way Serial Attached SCSI (SAS) supports SATA via the SATA Tunneling Protocol (STP). While SAS support of STP is defined in the SAS specification, no mechanism was provided for the FC-SATA protocol until the introduction of FAST in the applications referred to above.
FIG. 2 illustrates a SAN 200 including SATA drives and a conversion from FC to SATA using the new FAST or FC-SATA protocol. When SCSI commands are to be sent from host 230 to SATA drives 242 in disk drive enclosure 232, a FC HBA 234 in host 230 sends FC frames encapsulating the SCSI commands out over the fabric 218 to a RAID controller 220, where they are received in one of the ports 236 on the RAID controller 220. The FC frames are then routed to FC IOCs 222 in the RAID controller 220. The SCSI commands within the FC frames are then de-encapsulated by the FC IOCs 222 and passed over a Peripheral Component Interconnect (PCI) bus 224 to a processor 226, which performs the RAID function and creates multiple commands to satisfy the received SCSI command. The created commands may be SCSI commands or SATA commands and will be sent to one or more disk drives within enclosures 232.
The SCSI commands 206 are then passed from the processor 226 over a custom interface 228 (which may include, but is not limited to a PCI bus) to FAST-enabled IOCs 204. The FAST IOCs 204 contain the same hardware as conventional FC IOCs, but include additional firmware 202 to allow it to handle both FC and SATA. SCSI commands 206 from processor 226 are converted in SCSI-to-SATA translation firmware 208 to SATA FISs. The SATA FISs are then encapsulated by FAST encapsulation firmware 212 into FC frames. In particular, each 8 kByte SATA FIS is encapsulated into four 2 kByte FC frames along with modifications to the header in the FC frames that enable the SATA-encapsulated FC frames to traverse a FC link. The FAST IOC 204 then sends the FC frames out over a FC link 246 via a FC port 244.
The FC frames are received by FAST switches 240 in disk drive enclosures 232, which are utilized instead of FC-to-SATA bridges. The drives can be presented as pure ATA throughout the SAN, while using FC as the transport. The FAST switches 240 include a FAST engine 252, which de-encapsulates the FC frames to retrieve the SATA FISs, handles initialization, sequences, exchanges, and all of the low-level FC commands and structures. The de-encapsulated SATA FISs are then communicated over a pure SATA connection 248 to the SATA drives 242.
The reverse of the above-described process is employed when a SATA drive 242 sends SATA FISs back to the host 230. Thus, when SATA FISs are to be sent from a SATA drive 242 to the RAID controller 220, the SATA FISs are sent over the SATA connection 248 to the FAST switch 240, where it is encapsulated in FC frames. The FAST switch 240 then transmits the FC frames over the FC link 246 to the RAID controller 220, where they are received by the FAST IOC 204. The FAST IOC 204 receives the FC frames, de-encapsulates the frames to retrieve the SATA FISs, and performs a SATA to SCSI translation 208 so that the RAID controller will see the target drive 242 as a SCSI device. The SCSI commands are sent to the processor 226 over PCI bus 228, which performs the RAID function and identifies the hosts (initiators) for which the SCSI data is destined. The SCSI data is then sent to the FC IOCs 222 over PCI bus 224, where they are encapsulated into FC frames and sent to the appropriate hosts over the fabric 218. The hosts then de-encapsulate the FC frames to retrieve the SCSI commands.
FIG. 3 illustrates an exemplary FAST switch 300 (e.g. FAST switch 240 in FIG. 2) resident in a FAST disk drive enclosure (e.g. enclosure 232 in FIG. 2). The FAST switch 300 contains a number of FC Phy 302 and FC link layers 304 for interfacing with the FC ports on one or more RAID controllers over a FC link 304. The FC Phy 302 and FC link layers 304 handle all the primitives in FC. These layers monitor received FC primitives, modifying the active switch matrix connections in response to traffic going across the FC link. The FC link layers 304 are connected to a crossbar switch 306, which is also connected to a number of port link layers 308, one in each FC/SATA port, for connecting to either a FC device or a SATA device. The crossbar switch 306 operates in FC Arbitrated Loop (FC_AL) space, and performs a switching function. It uses the FC Arbitrated Loop Physical Address (AL_PA) and OPN ordered sets to determine the destination of a connection request, and makes a connection across the crossbar switch to the target device.
Each port link layer 308 includes a FC/SATA link layer 310, a FC Tunneling SATA (FTS) layer 312, and a FC/SATA Phy 314. The FTS layer 312 contains logic which detects whether the port link layer 308 is connected to a SATA drive by detecting SATA ordered sets, and determines the status of the SATA drive. The FC/SATA Phy 314 are connected to SATA or FC drives 316.
Also connected to the crossbar switch 306 are FAST port/buffers 318 coupled to the crossbar switch 306 and one or more (e.g. four) FAST engines 320. The FAST engine 320 contains a full SATA core (and a Register Transfer Level (RTL) state machine) that understands the lower levels of the SATA protocol. A router 322 is connected to the crossbar switch 306 and makes routing decisions within the crossbar switch 306. Also connected to the crossbar switch 306 is an enclosure management function 324 controllable by a CPU port 326. The CPU port is a path to allow a processor to monitor FC frames locally.
As previously noted, no mechanism was provided for a FC-SATA protocol until the introduction of FAST in the applications referred to above. FC and SATA both had defined initialization sequences for their own protocols, but until the introduction of FAST, there was no need to auto-discriminate between the two protocols because they could not be supported by the same infrastructure.
With the introduction of the FAST protocol, either FC or SATA drives can be inserted into a port. Therefore, there is now a need to allow users to insert either FC or SATA drives into a FAST-compatible system and have the system auto-detect the protocol support required by the drive, without any user interaction required to reconfigure the system. In particular, there is a need for a FAST-compatible port to automatically determine the drive type (e.g. FC or SATA), set the appropriate data rate for the Phy or SERializer/DESerializer (SERDES), and start the disk insertion process when a drive is inserted into the port.